
// �ֻ������֤
jQuery.validator.addMethod("mobile", function(value, element) {    
  var length = element.value.length;  
//  // ����Ϊ11����13��15��18��ͷ��
  return this.optional(element) || (length == 11 && /^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\d{8})$/.test(element.value));    
},"Please enter a valid mobile.");  


//ip��֤
jQuery.validator.addMethod("ip", function(value, element) {  
    return this.optional(element) || (/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/.test(element.value) && (RegExp.$1 < 256 && RegExp.$2 < 256 && RegExp.$3 < 256 && RegExp.$4 < 256));      
  }, "Please enter a valid ip address.");    

//���ֻ������ĸ�����ֵ���֤      
jQuery.validator.addMethod("chrnum", function(value, element) {      
  return this.optional(element) || (/^([a-zA-Z0-9]+)$/.test(element.value));      
}, "Please enter a valid chrnum");      

//�Զ�����֤���򡪡��Ե绰���������֤    
$.validator.addMethod("phone",function(value, element){         
 // ��/\(?0\d{2,3}[) -]?\d{7,8}/��ƥ��绰����ĸ�ʽ���֣�010-82839278��(010)82839278��01082839278�ȣ����ǣ�������һ������      
 // �磺(01082839278�����Ҳ��ƥ�䡣��Ȼ�����÷�֧���"|"���Ƚ��鷳��������ʲô��ʼ�����Ҳû��ƥ�䡣      
 // Ϊ�˼����ȥ����"()"����ʽ��ƥ�����3λ���򱾵غ�8λ�����4λ���򱾵غ�7λ�ĺ��롣      
 var tel = /^0\d{2}[-]?\d{8}$|^0\d{3}[-]?\d{7}$/;      
 return this.optional(element) || (tel.test(element.value));      
 }, "dian hua hao ma ge si bu dui." );    


// ���֤������֤
jQuery.validator.addMethod("isIdCardNo", function(value, element) {
    return this.optional(element) || isIdCardNo(element.value);
}, "qing shu ru sheng fen zheng hao");

//����������֤    
jQuery.validator.addMethod("zip", function(value, element) {    
  var tel = /^[0-9]{6}$/;    
  return this.optional(element) || (tel.test(element.value));    
}, "you bian ge si bu dui"); 

//�ַ���С������֤��һ�������ַ��Ϊ2��
jQuery.validator.addMethod("stringMinLength", function(value, element, param) {
var length = element.value.length;
for ( var i = 0; i < element.value.length; i++) {
if (element.value.charCodeAt(i) > 127) {
length++;
}
}
return this.optional(element) || (length >= param);
}, $.validator.format("chagn du bu neng xiao yu{0}!"));


//������������ַ�
jQuery.validator.addMethod("string", function(value, element) {
	return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(element.value);
},"bu yun xu bao han te su zi fu!");

//�û�����֤  
jQuery.validator.addMethod("username", function(value, element) {      
	   return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(element.value);      
},"yong hu ming yan zhen");  

jQuery.validator.addMethod("positive", function(value, element) {    
  var tel = /^[0-9]*[1-9][0-9]*$/;    
  return this.optional(element) || (tel.test(element.value));    
}, "positive"); 

/**
 * ���֤������֤����
 *
 */
function isIdCardNo(num) {

 var factorArr = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
 var parityBit=new Array("1","0","X","9","8","7","6","5","4","3","2");
 var varArray = new Array();
 var intValue;
 var lngProduct = 0;
 var intCheckDigit;
 var intStrLen = num.length;
 var idNumber = num;
   // initialize
     if ((intStrLen != 15) && (intStrLen != 18)) {
         return false;
     }
     // check and set value
     for(i=0;i<intStrLen;i++) {
         varArray[i] = idNumber.charAt(i);
         if ((varArray[i] < '0' || varArray[i] > '9') && (i != 17)) {
             return false;
         } else if (i < 17) {
             varArray[i] = varArray[i] * factorArr[i];
         }
     }
     
     if (intStrLen == 18) {
         //check date
         var date8 = idNumber.substring(6,14);
         if (isDate8(date8) == false) {
            return false;
         }
         // calculate the sum of the products
         for(i=0;i<17;i++) {
             lngProduct = lngProduct + varArray[i];
         }
         // calculate the check digit
         intCheckDigit = parityBit[lngProduct % 11];
         // check last digit
         if (varArray[17] != intCheckDigit) {
             return false;
         }
     }
     else{        //length is 15
         //check date
         var date6 = idNumber.substring(6,12);
         if (isDate6(date6) == false) {

             return false;
         }
     }
     return true;
     
 }

/**
 * �ж��Ƿ�Ϊ��YYYYMM��ʽ��ʱ��
 *
 */
function isDate6(sDate) {
   if(!/^[0-9]{6}$/.test(sDate)) {
      return false;
   }
   var year, month, day;
   year = sDate.substring(0, 4);
   month = sDate.substring(4, 6);
   if (year < 1700 || year > 2500) return false
   if (month < 1 || month > 12) return false
   return true
}
/**
 * �ж��Ƿ�Ϊ��YYYYMMDD��ʽ��ʱ��
 *
 */
function isDate8(sDate) {
   if(!/^[0-9]{8}$/.test(sDate)) {
      return false;
   }
   var year, month, day;
   year = sDate.substring(0, 4);
   month = sDate.substring(4, 6);
   day = sDate.substring(6, 8);
   var iaMonthDays = [31,28,31,30,31,30,31,31,30,31,30,31]
   if (year < 1700 || year > 2500) return false
   if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) iaMonthDays[1]=29;
   if (month < 1 || month > 12) return false
   if (day < 1 || day > iaMonthDays[month - 1]) return false
   return true
} 

